package cn.edu.zsc.blms.service.impl.array.collection;

import cn.edu.zsc.blms.App;
import cn.edu.zsc.blms.domain.Reader;
import cn.edu.zsc.blms.exception.EntityNotExistException;
import cn.edu.zsc.blms.service.ReaderService;
import java.util.Set;


public class ReaderServiceImpl extends BaseServiceImpl<Reader> implements ReaderService {


//    /**
//     * 存储读者信息
//     */
//    public Reader[] DATA = new Reader[100];

    /**
     * ID计数器
     */
    public int idCounter;


    /**
     * 添加读者
     */
    @Override
    public void create() {
        System.out.print("请输入姓名：");
        String name = App.input.nextLine();
        System.out.print("请输入电话：");
        String phone = App.input.nextLine();
        Reader reader = new Reader(idCounter, name, phone);
        DATA.put(reader.id, reader);
        System.out.println("成功增加1为位读者！");
        idCounter++;
    }

    /**
     * 禁用读者
     */
    @Override
    public void disable() {
        System.out.print("请输入要禁用的读者ID:");
        Reader reader = null;
        try {
            reader = getOne();
        } catch (EntityNotExistException e) {
            System.out.println(e.getMessage());
        }
        if (reader != null) {
            reader.disabled = true;
            System.out.println("该用户已被禁用");
        }
    }


    /**
     * 修改读者
     */
    @Override
    public void update() {
        System.out.print("请输入要编辑的读者ID:");

        Reader reader = null;
        try {
            reader = getOne();
        } catch (EntityNotExistException e) {
            System.out.println(e.getMessage());
        }
        if (reader != null) {

            System.out.print("请输入姓名，直接按回车表示不会修改:");
            String name = App.input.nextLine();
            reader.name = "".equals(name) ? reader.name : name;
            System.out.print("请输入电话，直接按回车表示不修改:");
            String phone = App.input.nextLine();
            reader.phone = "".equals(phone) ? reader.phone : phone;
            System.out.println("该用户的信息已被修改");
        }
    }


    /**
     * 查询读者
     */
    @Override
    public void query() {
        System.out.print("请输入要查询的读者姓名:");
        String name = App.input.nextLine();
        Set<Integer> ids = DATA.keySet();
        for (Integer id : ids) {
            Reader reader = DATA.get(id);
            if (reader.name != null && reader.name.contains(name)) {
                System.out.println(reader);
            }
        }
    }
    /**
     * 获取用户输入的有效ID值，返回-1表示用户输入的ID值是无效的
     *
     * @return ID值
     */
//    public int getInputId(){
//        if(!App.input.hasNextInt()){
//            App.input.nextLine();
//            System.out.println("ID为整数，请输入整数值");
//            return -1;
//        }
//        int id=App.input.nextInt();
//        App.input.nextLine();
//        if(id>=idCounter||DATA[id]==null){
//            System.out.println("不存在该ID的读者");
//            return -1;
//        }
//        return id;
//    }

    /**
     * 单例
     */
    private static ReaderService singleton;

    /**
     * 私有构造方法
     */
    private ReaderServiceImpl(){

    }

    /**
     *获取单例，非线性安全
     *
     *
     * @return ReaderService单例
     */
    public static ReaderService getSingleton(){
        if(singleton == null){
            singleton = new ReaderServiceImpl();
        }
        return singleton;
    }


}




